home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nebula 2
/
Nebula Two.iso
/
SourceCode
/
Starter
/
Source
/
util.m
< prev
Wrap
Text File
|
1995-06-12
|
3KB
|
122 lines
#import <appkit/appkit.h>
#import "defs.h"
BOOL truthValue(const char *str)
{ if (!str) return NO;
switch (str[0]|32) {
case '1': case 'a': case 't': case 'y': return YES;
default: return NO;
}
}
const char *getDefaultWithErrorCheck(const char *defname)
{
register const char *a=[NXApp appName];
const char *p;
p=(char *)NXGetDefaultValue(a,defname);
if(!p)
{ NXRunAlertPanel("Internal Error",
"%s default undefined",
NULL,NULL,NULL,defname);
}
return p;
}
BOOL BoolValueForDefault(const char *defname)
{
const char *p=getDefaultWithErrorCheck(defname);
return truthValue(p);
}
int IntValueForDefault(const char *defname)
{
const char *p=getDefaultWithErrorCheck(defname);
return atoi(p);
}
void copyStringBufferFromZone(char **ptr,const char *contents, NXZone *zone)
{
if(*ptr==contents) return;
if(*ptr) free(*ptr);
*ptr=NXCopyStringBufferFromZone(contents,zone);
}
BOOL makepath(char *parent,char *child, BOOL cleanFlag)
{
char *p1, buf[BUFSIZE];
if(!child) return NO;
if(parent)
{ if(mkdir(parent,0700)<0 && errno!=EEXIST) goto FAILED;
sprintf(buf,"%s/%s",parent,child);
}
else strcpy(buf, child);
p1=strstr(buf,child);
for(;;)
{ p1=strchr(p1,'/');
if(p1) p1[0]='\0';
if(mkdir(buf,0700)<0 && errno!=EEXIST) goto FAILED;
if(!p1) goto CLEAR_LABEL;
p1[0]='/';
p1++;
}
FAILED:
return NO;
CLEAR_LABEL:
if(cleanFlag)
{ sprintf(buf,
"exec /bin/rm -rf %s/%s/*",parent,child);
if (chdir(NXHomeDirectory())>=0)
system(buf);
}
return YES;
}
NXScreen *getScreenOfNumber(int screenNum)
{
int i,count;
NXScreen *list;
[NXApp getScreens:&list count:&count];
for(i=0;i<count;i++)
{ if(list[i].screenNumber==screenNum)
return &list[i];
}
return NULL;
}
char *findNameInPath(const char *path)
{
static char empty[]="";
char *p=empty;
if((p=strrchr(path,'/'))) p++;
if(!p || !p[0]) p=(char *)path;
return p;
}
BOOL extCheck(const char *path, const char *extension)
{
int len, pathLen;
if(!path || !extension) return NO;
len=strlen(extension);
pathLen=strlen(path);
return ((path[pathLen-len-1]=='.') &&
(strcmp((char *)(path+(pathLen-len)),extension)==0));
}
void insertExt(const char *path, const char *extension)
{ if(!extCheck(path,extension))
{ int len=strlen(path);
if(path[len-1]!='.') strcat((char *)path,".");
strcat((char *)path,extension);
}
}
void internalError(const char *message)
{ NXRunAlertPanel("Internal Error","%s",NULL,NULL,NULL,message);
}